import axios from 'axios'
import commonMethods from './commonMethods.js'

export default function (Options) {
    return {
        /**
         * GET 方法
         * @method get(urlKey, config, ..., argN)
         * @memberof GetData
         * @param urlKey 对应API 中的urlkey
         * @param config 发送ajax传递的参数对象
         * @param argN 可配置无数个参数，第三个至最后的一个参数会以'/'为连接符拼至请求 url 中
         * @returns {promise} 返回promise对象
         * @example
         * axios.get('/user', {
         *   params: {
         *     ID: 12345
         *   }
         * }, path1, path2, path3...)
         */
        get: function (urlKey, config) {
            // 如果用户自定义URL，则直接使用用户自定义的URL，不使用apilist
            var args = Array.prototype.slice.apply(arguments);
            // var url = Options.baseUrl + Options.apiList[urlKey] + '/' + args.slice(2, args.length).join('/');
            var url = commonMethods.formatUrl(Options, urlKey, args, 2);
            var _config = commonMethods.getConfig(config, Options);
            axios.defaults.withCredentials=true
            return axios.get(url, _config);
        },

        /**
         * 用户自定义URL的GET方法
         * @method getUrl(url, config)
         * @memberof GetData
         * @param url 户自定义的URL
         * @param config 发送ajax传递的参数对象
         * @returns {promise} 返回promise对象
         */
        getUrl: function (url, config) {
            var _config = commonMethods.getConfig(config, Options);
            axios.defaults.withCredentials=true
            return axios.get(url, _config);
        },

        /**
         * 调用restful接口的GET方法
         * @method getRestful(urlKey, params)
         * @memberof GetData
         * @param urlKey 对应API 中的urlkey
         * @param config 发送ajax传递的参数对象
         * @returns {promise} 返回promise对象
         */
         getRestful: function (urlKey, params, config) {
            // 如果用户自定义URL，则直接使用用户自定义的URL，不使用apilist
            var url = Options.baseUrl + Options.apiList[urlKey];
            var _config = commonMethods.extendConfig(config, Options);
            url = url.restfulFormat(params);
            axios.defaults.withCredentials=true
            return axios.get(url, _config);
        },

        /**
         * GET 请求的扩展方法
         * @method getRestful(urlKey, config)
         * @memberof GetData
         * @param urlKey 对应API 中的urlkey
         * @param id 请求url的第一个扩展路径
         * @param child 请求url的第二个扩展路径
         * @param config 发送ajax传递的参数对象
         * @returns {promise} 返回promise对象
         */
         getExpend: function (urlKey, id, child, config) {
            var url = Options.baseUrl + Options.apiList[urlKey] + '/' + id + '/' + child;
            var _config = commonMethods.extendConfig(config, Options);
            axios.defaults.withCredentials=true
            return axios.get(url, _config);
        },
    }

}

